package com.uniandes.edu.co.procesar.interrupcion;

import java.util.LinkedList;
import java.util.List;

import com.uniandes.edu.co.anotaciones.LogD;
import com.uniandes.edu.co.anotaciones.LogT;
import com.uniandes.edu.co.anotaciones.LogsD;
import com.uniandes.edu.co.anotaciones.LogsT;
import com.uniandes.edu.co.dto.EtapasDesarrollo;
import com.uniandes.edu.co.dto.Interrupcion;

/**
 * clase encargada de procesar los datos de las interrupciones
 * @author Juan Camilo Sanchez
 *
 */
public class ProcesarInterrupciones {

	/**
	 * instancia unica de la clase
	 */
	@LogsT({@LogT(taskId=99, idPersona=20112, idCiclo=2, date="20/03/2011", min=1, porcentajeRealValorGanado=1)})
	static private ProcesarInterrupciones solitario = null;

	/**
	 * metodo que valida que solo este creado una instancia de
	 * la clase
	 * @return la instancia de la clase
	 */
	@LogsT({@LogT(taskId=99, idPersona=20112, idCiclo=2, date="20/03/2011", min=1, porcentajeRealValorGanado=1)})
	static public ProcesarInterrupciones getSingleton() {
		if (solitario == null) {
			solitario = new ProcesarInterrupciones();
		}
		return solitario;
	}
	
	/**
	 * metodo encargado de agregar las interrupciones al ciclo
	 */
	@LogsT({@LogT(taskId=99, idPersona=20112, idCiclo=2, date="20/03/2011", min=1,porcentajeRealValorGanado=1),
			@LogT(taskId=99, idPersona=20111, idCiclo=2, date="20/03/2011", min=4,porcentajeRealValorGanado=1)})
	public boolean agregarInterrupcion(String idInterrupcion,String descripcion,List<Interrupcion> listado){	
		Interrupcion newInt = new Interrupcion(idInterrupcion,descripcion);
		listado.add(newInt);
		return true;
	}
	
	/**
	 * metodo encargado de modificar las interrupciones del ciclo
	 */
	@LogsT({@LogT(taskId=99, idPersona=20112, idCiclo=2, date="20/03/2011", min=1, porcentajeRealValorGanado=1)})
	public boolean modificarInterrupcion(String idInterrupcion,String descripcion,List<Interrupcion> listado)
	{
		Interrupcion temp = ProcesarInterrupciones.getSingleton().buscarInterrupcion(idInterrupcion, listado);
		temp.setDescripcion(descripcion);
		return true;
	}
	
	/**
	 * metodo encargado de eliminar las interrupciones del ciclo
	 */
	@LogsT({@LogT(taskId=99, idPersona=20112, idCiclo=2, date="20/03/2011", min=1,porcentajeRealValorGanado=1),
		@LogT(taskId=99, idPersona=20111, idCiclo=2, date="20/03/2011", min=1,porcentajeRealValorGanado=0)})
	@LogsD({@LogD(idCiclo=3, idPersona=20112, etapa=EtapasDesarrollo.INSPECCION, tipo=25)})
	public boolean eliminarInterrupcion(String idInterrupcion,List<Interrupcion> listado)
	{
		boolean value=false;
		for(int i=0;i<listado.size();i++)
		{
			if(listado.get(i).getIdInterrupcion().equals(idInterrupcion))
			{
				listado.remove(i);
				i = listado.size();
				value = true;
			}
		}
		return value;
	}
	/**
	 * metodo encargado de consultar las interrupciones del ciclo
	 */
	@LogsT({@LogT(taskId=99, idPersona=20111, idCiclo=2, date="20/03/2011", min=3,porcentajeRealValorGanado=1)})
	public Interrupcion buscarInterrupcion(String idInterrupcion, List<Interrupcion> listado)
	{
		for(int i=0;i<listado.size();i++)
		{
			if(listado.get(i).getIdInterrupcion().equals(idInterrupcion))
			{
				return listado.get(i);
			}
		}
		return null;
	}
}